home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / assembler / progasm1.lha / SORGENTI3 / LEZIONE7s.s < prev    next >
Text File  |  1994-11-28  |  15KB  |  559 lines

  1.  
  2. ; Lezione7s.s    VISUALIZZAZIONE DI 16 SPRITE
  3.  
  4. ;    In questo listato si mostra come riutilizzare gli sprite.
  5. ;    Premendo il tasto sinistro gli sprite cambiano posizione.
  6. ;    Tasto destro del mouse per uscire.
  7.  
  8.     SECTION    CiriCop,CODE
  9.  
  10. Inizio:
  11.     move.l    4.w,a6        ; Execbase
  12.     jsr    -$78(a6)    ; Disable
  13.     lea    GfxName(PC),a1    ; Nome lib
  14.     jsr    -$198(a6)    ; OpenLibrary
  15.     move.l    d0,GfxBase
  16.     move.l    d0,a6
  17.     move.l    $26(a6),OldCop
  18.  
  19.  
  20.     MOVE.L    #BITPLANE,d0
  21.     LEA    BPLPOINTERS,A1
  22.     move.w    d0,6(a1)
  23.     swap    d0
  24.     move.w    d0,2(a1)
  25.  
  26. ;    Puntiamo gli sprite
  27.  
  28.     MOVE.L    #MIOSPRITE0,d0        ; indirizzo dello sprite in d0
  29.     LEA    SpritePointers,a1    ; Puntatori in copperlist
  30.     move.w    d0,6(a1)
  31.     swap    d0
  32.     move.w    d0,2(a1)
  33.     MOVE.L    #MIOSPRITE1,d0        ; indirizzo dello sprite in d0
  34.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  35.     move.w    d0,6(a1)
  36.     swap    d0
  37.     move.w    d0,2(a1)
  38.     MOVE.L    #MIOSPRITE2,d0        ; indirizzo dello sprite in d0
  39.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  40.     move.w    d0,6(a1)
  41.     swap    d0
  42.     move.w    d0,2(a1)
  43.     MOVE.L    #MIOSPRITE3,d0        ; indirizzo dello sprite in d0
  44.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  45.     move.w    d0,6(a1)
  46.     swap    d0
  47.     move.w    d0,2(a1)
  48.     MOVE.L    #MIOSPRITE4,d0        ; indirizzo dello sprite in d0
  49.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  50.     move.w    d0,6(a1)
  51.     swap    d0
  52.     move.w    d0,2(a1)
  53.     MOVE.L    #MIOSPRITE5,d0        ; indirizzo dello sprite in d0
  54.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  55.     move.w    d0,6(a1)
  56.     swap    d0
  57.     move.w    d0,2(a1)
  58.     MOVE.L    #MIOSPRITE6,d0        ; indirizzo dello sprite in d0
  59.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  60.     move.w    d0,6(a1)
  61.     swap    d0
  62.     move.w    d0,2(a1)
  63.     MOVE.L    #MIOSPRITE7,d0        ; indirizzo dello sprite in d0
  64.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  65.     move.w    d0,6(a1)
  66.     swap    d0
  67.     move.w    d0,2(a1)
  68.  
  69. ; posizioni sprite
  70.     MOVE.B    #$2C+50,VSTART0
  71.     MOVE.B    #$2C+50+8,VSTOP0
  72.     MOVE.B    #$2C+50,VSTART1
  73.     MOVE.B    #$2C+50+8,VSTOP1
  74.     MOVE.B    #$2C+50,VSTART2
  75.     MOVE.B    #$2C+50+8,VSTOP2
  76.     MOVE.B    #$2C+50,VSTART3
  77.     MOVE.B    #$2C+50+8,VSTOP3
  78.     MOVE.B    #$2C+50,VSTART4
  79.     MOVE.B    #$2C+50+8,VSTOP4
  80.     MOVE.B    #$2C+50,VSTART5
  81.     MOVE.B    #$2C+50+8,VSTOP5
  82.     MOVE.B    #$2C+50,VSTART6
  83.     MOVE.B    #$2C+50+8,VSTOP6
  84.     MOVE.B    #$2C+50,VSTART7
  85.     MOVE.B    #$2C+50+8,VSTOP7
  86.  
  87. ; da qui iniziano gli sprite "riusati"
  88.     MOVE.B    #$2C+90,VSTART8
  89.     MOVE.B    #$2C+90+8,VSTOP8
  90.     MOVE.B    #$2C+90,VSTART9
  91.     MOVE.B    #$2C+90+8,VSTOP9
  92.     MOVE.B    #$2C+90,VSTART10
  93.     MOVE.B    #$2C+90+8,VSTOP10
  94.     MOVE.B    #$2C+90,VSTART11
  95.     MOVE.B    #$2C+90+8,VSTOP11
  96.     MOVE.B    #$2C+90,VSTART12
  97.     MOVE.B    #$2C+90+8,VSTOP12
  98.     MOVE.B    #$2C+90,VSTART13
  99.     MOVE.B    #$2C+90+8,VSTOP13
  100.     MOVE.B    #$2C+90,VSTART14
  101.     MOVE.B    #$2C+90+8,VSTOP14
  102.     MOVE.B    #$2C+90,VSTART15
  103.     MOVE.B    #$2C+90+8,VSTOP15
  104.  
  105.  
  106.     move.l    #COPPERLIST,$dff080    ; nostra COP
  107.     move.w    d0,$dff088        ; START COP
  108.     move.w    #0,$dff1fc        ; NO AGA!
  109.     move.w    #$c00,$dff106        ; NO AGA!
  110.  
  111. Mouse1:
  112.     btst    #6,$bfe001    ; tasto sinistro del mouse premuto?
  113.     bne.s    mouse1
  114.  
  115. ; mette nuove posizioni verticali
  116.  
  117.     MOVE.B    #$2C+10,VSTART0
  118.     MOVE.B    #$2C+10+8,VSTOP0
  119.     MOVE.B    #$2C+10+8*1,VSTART1
  120.     MOVE.B    #$2C+10+8*1+8,VSTOP1
  121.     MOVE.B    #$2C+10+8*2,VSTART2
  122.     MOVE.B    #$2C+10+8*2+8,VSTOP2
  123.     MOVE.B    #$2C+10+8*3,VSTART3
  124.     MOVE.B    #$2C+10+8*3+8,VSTOP3
  125.     MOVE.B    #$2C+10+8*4,VSTART4
  126.     MOVE.B    #$2C+10+8*4+8,VSTOP4
  127.     MOVE.B    #$2C+10+8*5,VSTART5
  128.     MOVE.B    #$2C+10+8*5+8,VSTOP5
  129.     MOVE.B    #$2C+10+8*6,VSTART6
  130.     MOVE.B    #$2C+10+8*6+8,VSTOP6
  131.     MOVE.B    #$2C+10+8*7,VSTART7
  132.     MOVE.B    #$2C+10+8*7+8,VSTOP7
  133.  
  134. ; da qui iniziano gli sprite "riusati"
  135.  
  136.     MOVE.B    #$2C+10+20,VSTART8
  137.     MOVE.B    #$2C+10+20+8,VSTOP8
  138.     MOVE.B    #$2C+10+20+8*1,VSTART9
  139.     MOVE.B    #$2C+10+20+8*1+8,VSTOP9
  140.     MOVE.B    #$2C+10+20+8*2,VSTART10
  141.     MOVE.B    #$2C+10+20+8*2+8,VSTOP10
  142.     MOVE.B    #$2C+10+20+8*3,VSTART11
  143.     MOVE.B    #$2C+10+20+8*3+8,VSTOP11
  144.     MOVE.B    #$2C+10+20+8*4,VSTART12
  145.     MOVE.B    #$2C+10+20+8*4+8,VSTOP12
  146.     MOVE.B    #$2C+10+20+8*5,VSTART13
  147.     MOVE.B    #$2C+10+20+8*5+8,VSTOP13
  148.     MOVE.B    #$2C+10+20+8*6,VSTART14
  149.     MOVE.B    #$2C+10+20+8*6+8,VSTOP14
  150.     MOVE.B    #$2C+10+20+8*7,VSTART15
  151.     MOVE.B    #$2C+10+20+8*7+8,VSTOP15
  152.  
  153. Mouse2:
  154.     btst    #2,$dff016
  155.     bne.s    Mouse2
  156.  
  157.  
  158.     move.l    OldCop(PC),$dff080    ; Puntiamo la cop di sistema
  159.     move.w    d0,$dff088        ; facciamo partire la vecchia cop
  160.  
  161.     move.l    4.w,a6
  162.     jsr    -$7e(a6)    ; Enable
  163.     move.l    gfxbase(PC),a1
  164.     jsr    -$19e(a6)    ; Closelibrary
  165.     rts
  166.  
  167. ;    Dati
  168.  
  169. GfxName:
  170.     dc.b    "graphics.library",0,0
  171.  
  172. GfxBase:
  173.     dc.l    0
  174.  
  175. OldCop:
  176.     dc.l    0
  177.  
  178.     SECTION    GRAPHIC,DATA_C
  179.  
  180. COPPERLIST:
  181. SpritePointers:
  182.     dc.w    $120,0,$122,0,$124,0,$126,0,$128,0 ; SPRITE
  183.     dc.w    $12a,0,$12c,0,$12e,0,$130,0,$132,0
  184.     dc.w    $134,0,$136,0,$138,0,$13a,0,$13c,0
  185.     dc.w    $13e,0
  186.  
  187.     dc.w    $8E,$2c81    ; DiwStrt
  188.     dc.w    $90,$2cc1    ; DiwStop
  189.     dc.w    $92,$38        ; DdfStart
  190.     dc.w    $94,$d0        ; DdfStop
  191.     dc.w    $102,0        ; BplCon1
  192.     dc.w    $104,0        ; BplCon2
  193.     dc.w    $108,0        ; Bpl1Mod
  194.     dc.w    $10a,0        ; Bpl2Mod
  195.  
  196.             ; 5432109876543210
  197.     dc.w    $100,%0001001000000000
  198.  
  199. BPLPOINTERS:
  200.     dc.w $e0,0,$e2,0    ;primo     bitplane
  201.  
  202.     dc.w    $180,$000    ; color0    ; sfondo nero
  203.     dc.w    $182,$123    ; color1    ; colore 1 del bitplane, che
  204.                         ; in questo caso e' vuoto,
  205.                         ; per cui non compare.
  206.  
  207.     dc.w    $1A2,$F00    ; color17, - COLOR1 degli sprite0/1 -ROSSO
  208.     dc.w    $1A4,$0F0    ; color18, - COLOR2 degli sprite0/1 -VERDE
  209.     dc.w    $1A6,$FF0    ; color19, - COLOR3 degli sprite0/1 -GIALLO
  210.  
  211.     dc.w    $1AA,$FFF    ; color21, - COLOR1 degli sprite2/3 -BIANCO
  212.     dc.w    $1AC,$0BD    ; color22, - COLOR2 degli sprite2/3 -ACQUA
  213.     dc.w    $1AE,$D50    ; color23, - COLOR3 degli sprite2/3 -ARANCIO
  214.  
  215.     dc.w    $1B2,$00F    ; color25, - COLOR1 degli sprite4/5 -BLU
  216.     dc.w    $1B4,$F0F    ; color26, - COLOR2 degli sprite4/5 -VIOLA
  217.     dc.w    $1B6,$BBB    ; color27, - COLOR3 degli sprite4/5 -GRIGIO
  218.  
  219.     dc.w    $1BA,$8E0    ; color29, - COLOR1 degli sprite6/7 -VERDE CH.
  220.     dc.w    $1BC,$a70    ; color30, - COLOR2 degli sprite6/7 -MARRONE
  221.     dc.w    $1BE,$d00    ; color31, - COLOR3 degli sprite6/7 -ROSSO SC.
  222.  
  223.     dc.w    $FFFF,$FFFE    ; Fine della copperlist
  224.  
  225.  
  226. ; ************ Ecco gli sprite: OVVIAMENTE in CHIP RAM! ************
  227.  
  228.  ; tabella di riferimento per definire i colori:
  229.  
  230.  
  231.  ; per gli sprite 0 ed 1
  232.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  233.  ;BINARIO 10=COLORE 1 (ROSSO)
  234.  ;BINARIO 01=COLORE 2 (VERDE)
  235.  ;BINARIO 11=COLORE 3 (GIALLO)
  236.  
  237. MIOSPRITE0:        ; lunghezza 13 linee
  238. VSTART0:
  239.     dc.b 0
  240. HSTART0:
  241.     dc.b $40+12+0*20
  242. VSTOP0:
  243.     dc.b $0
  244.     dc.b $00
  245.  dc.w    %0000001111000000,%0111110000111110
  246.  dc.w    %0000111111110000,%1111001110001111
  247.  dc.w    %0011111111111100,%1100010001000011
  248.  dc.w    %0111111111111110,%1000010001000001
  249.  dc.w    %0111111111111110,%1000010001000001
  250.  dc.w    %0011111111111100,%1100010001000011
  251.  dc.w    %0000111111110000,%1111001110001111
  252.  dc.w    %0000001111000000,%0111110000111110
  253. VSTART8:
  254.     dc.b $0
  255. HSTART8:
  256.     dc.b $40+20+0*12
  257. VSTOP8:
  258.     dc.b $0
  259.     dc.b $00
  260.  dc.w    %0000001111000000,%0111110000111110
  261.  dc.w    %0000111111110000,%1111001110001111
  262.  dc.w    %0011111111111100,%1100010001000011
  263.  dc.w    %0111111111111110,%1000001110000001
  264.  dc.w    %0111111111111110,%1000010001000001
  265.  dc.w    %0011111111111100,%1100010001000011
  266.  dc.w    %0000111111110000,%1111001110001111
  267.  dc.w    %0000001111000000,%0111110000111110
  268.  dc.w    0,0    ; fine sprite
  269.  
  270.  
  271. MIOSPRITE1:        ; lunghezza 13 linee
  272. VSTART1:
  273.     dc.b $0
  274. HSTART1:
  275.     dc.b $40+12+1*20
  276. VSTOP1:
  277.     dc.b $0
  278.     dc.b $00
  279.  dc.w    %0000001111000000,%0111110000111110
  280.  dc.w    %0000111111110000,%1111000010001111
  281.  dc.w    %0011111111111100,%1100000110000011
  282.  dc.w    %0111111111111110,%1000000010000001
  283.  dc.w    %0111111111111110,%1000000010000001
  284.  dc.w    %0011111111111100,%1100000010000011
  285.  dc.w    %0000111111110000,%1111000111001111
  286.  dc.w    %0000001111000000,%0111110000111110
  287. VSTART9:
  288.     dc.b $0
  289. HSTART9:
  290.     dc.b $40+20+1*12
  291. VSTOP9:
  292.     dc.b $0
  293.     dc.b $00
  294.  dc.w    %0000001111000000,%0111110000111110
  295.  dc.w    %0000111111110000,%1111001110001111
  296.  dc.w    %0011111111111100,%1100010001000011
  297.  dc.w    %0111111111111110,%1000001110000001
  298.  dc.w    %0111111111111110,%1000000001000001
  299.  dc.w    %0011111111111100,%1100000001000011
  300.  dc.w    %0000111111110000,%1111001110001111
  301.  dc.w    %0000001111000000,%0111110000111110
  302.  dc.w    0,0    ; fine sprite
  303.  
  304.  ; per gli sprite 2 e 3
  305.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  306.  ;BINARIO 10=COLORE 1 (BIANCO)
  307.  ;BINARIO 01=COLORE 2 (ACQUA)
  308.  ;BINARIO 11=COLORE 3 (ARANCIO)
  309.  
  310. MIOSPRITE2:        ; lunghezza 13 linee
  311. VSTART2:
  312.     dc.b $0
  313. HSTART2:
  314.     dc.b $40+12+2*20
  315. VSTOP2:
  316.     dc.b $0
  317.     dc.b $00
  318.  dc.w    %0000001111000000,%0111110000111110
  319.  dc.w    %0000111111110000,%1111000111001111
  320.  dc.w    %0011111111111100,%1100001000100011
  321.  dc.w    %0111111111111110,%1000000000100001
  322.  dc.w    %0111111111111110,%1000000111000001
  323.  dc.w    %0011111111111100,%1100001000000011
  324.  dc.w    %0000111111110000,%1111001111101111
  325.  dc.w    %0000001111000000,%0111110000111110
  326. VSTART10:
  327.     dc.b $0
  328. HSTART10:
  329.     dc.b $40+20+2*12
  330. VSTOP10:
  331.     dc.b $0
  332.     dc.b $00
  333.  dc.w    %0000001111000000,%0111110000111110
  334.  dc.w    %0000111111110000,%1111000000001111
  335.  dc.w    %0011111111111100,%1100010011100011
  336.  dc.w    %0111111111111110,%1000110010100001
  337.  dc.w    %0111111111111110,%1000010010100001
  338.  dc.w    %0011111111111100,%1100111011100011
  339.  dc.w    %0000111111110000,%1111000000001111
  340.  dc.w    %0000001111000000,%0111110000111110
  341.  dc.w    0,0    ; fine sprite
  342.  
  343. MIOSPRITE3:        ; lunghezza 13 linee
  344. VSTART3:
  345.     dc.b $0
  346. HSTART3:
  347.     dc.b $40+12+3*20
  348. VSTOP3:
  349.     dc.b 0
  350.     dc.b $00
  351.  dc.w    %0000001111000000,%0111110000111110
  352.  dc.w    %0000111111110000,%1111001111101111
  353.  dc.w    %0011111111111100,%1100000000100011
  354.  dc.w    %0111111111111110,%1000000111100001
  355.  dc.w    %0111111111111110,%1000000000100001
  356.  dc.w    %0011111111111100,%1100000000100011
  357.  dc.w    %0000111111110000,%1111001111101111
  358.  dc.w    %0000001111000000,%0111110000111110
  359. VSTART11:
  360.     dc.b $0
  361. HSTART11:
  362.     dc.b $40+20+3*12
  363. VSTOP11:
  364.     dc.b $0
  365.     dc.b $00
  366.  dc.w    %0000001111000000,%0111110000111110
  367.  dc.w    %0000111111110000,%1111000000001111
  368.  dc.w    %0011111111111100,%1100010001000011
  369.  dc.w    %0111111111111110,%1000110011000001
  370.  dc.w    %0111111111111110,%1000010001000001
  371.  dc.w    %0011111111111100,%1100111011100011
  372.  dc.w    %0000111111110000,%1111000000001111
  373.  dc.w    %0000001111000000,%0111110000111110
  374.  dc.w    0,0    ; fine sprite
  375.  
  376.  ; per gli sprite 4 e 5
  377.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  378.  ;BINARIO 10=COLORE 1 (BLU)
  379.  ;BINARIO 01=COLORE 2 (VIOLA)
  380.  ;BINARIO 11=COLORE 3 (GRIGIO)
  381.  
  382. MIOSPRITE4:        ; lunghezza 13 linee
  383. VSTART4:
  384.     dc.b $0
  385. HSTART4:
  386.     dc.b $40+12+4*20
  387. VSTOP4:
  388.     dc.b $0
  389.     dc.b $00
  390.  dc.w    %0000001111000000,%0111110000111110
  391.  dc.w    %0000111111110000,%1111001001001111
  392.  dc.w    %0011111111111100,%1100001001000011
  393.  dc.w    %0111111111111110,%1000001111000001
  394.  dc.w    %0111111111111110,%1000000001000001
  395.  dc.w    %0011111111111100,%1100000001000011
  396.  dc.w    %0000111111110000,%1111000001001111
  397.  dc.w    %0000001111000000,%0111110000111110
  398. VSTART12:
  399.     dc.b $0
  400. HSTART12:
  401.     dc.b $40+20+4*12
  402. VSTOP12:
  403.     dc.b $0
  404.     dc.b $00
  405.  dc.w    %0000001111000000,%0111110000111110
  406.  dc.w    %0000111111110000,%1111000000001111
  407.  dc.w    %0011111111111100,%1100010011000011
  408.  dc.w    %0111111111111110,%1000110001000001
  409.  dc.w    %0111111111111110,%1000010010000001
  410.  dc.w    %0011111111111100,%1100111011100011
  411.  dc.w    %0000111111110000,%1111000000001111
  412.  dc.w    %0000001111000000,%0111110000111110
  413.  dc.w    0,0    ; fine sprite
  414.  
  415. MIOSPRITE5:        ; lunghezza 13 linee
  416. VSTART5:
  417.     dc.b $0
  418. HSTART5:
  419.     dc.b $40+12+5*20
  420. VSTOP5:
  421.     dc.b $0
  422.     dc.b $0
  423.  dc.w    %0000001111000000,%0111110000111110
  424.  dc.w    %0000111111110000,%1111001111001111
  425.  dc.w    %0011111111111100,%1100001000000011
  426.  dc.w    %0111111111111110,%1000001111000001
  427.  dc.w    %0111111111111110,%1000000001000001
  428.  dc.w    %0011111111111100,%1100000001000011
  429.  dc.w    %0000111111110000,%1111001111001111
  430.  dc.w    %0000001111000000,%0111110000111110
  431. VSTART13:
  432.     dc.b $0
  433. HSTART13:
  434.     dc.b $40+20+5*12
  435. VSTOP13:
  436.     dc.b $0
  437.     dc.b $00
  438.  dc.w    %0000001111000000,%0111110000111110
  439.  dc.w    %0000111111110000,%1111000000001111
  440.  dc.w    %0011111111111100,%1100010011100011
  441.  dc.w    %0111111111111110,%1000110001100001
  442.  dc.w    %0111111111111110,%1000010000100001
  443.  dc.w    %0011111111111100,%1100111011000011
  444.  dc.w    %0000111111110000,%1111000000001111
  445.  dc.w    %0000001111000000,%0111110000111110
  446.  dc.w    0,0    ; fine sprite
  447.  
  448.  ; per gli sprite 6 e 7
  449.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  450.  ;BINARIO 10=COLORE 1 (VERDE CHIARO)
  451.  ;BINARIO 01=COLORE 2 (MARRONE)
  452.  ;BINARIO 11=COLORE 3 (ROSSO SCURO)
  453.  
  454. MIOSPRITE6:        ; lunghezza 13 linee
  455. VSTART6:
  456.     dc.b $0
  457. HSTART6:
  458.     dc.b $40+12+6*20
  459. VSTOP6:
  460.     dc.b $0
  461.     dc.b $00
  462.  dc.w    %0000001111000000,%0111110000111110
  463.  dc.w    %0000111111110000,%1111001111001111
  464.  dc.w    %0011111111111100,%1100001000000011
  465.  dc.w    %0111111111111110,%1000001111000001
  466.  dc.w    %0111111111111110,%1000001001000001
  467.  dc.w    %0011111111111100,%1100001001000011
  468.  dc.w    %0000111111110000,%1111001111001111
  469.  dc.w    %0000001111000000,%0111110000111110
  470. VSTART14:
  471.     dc.b $0
  472. HSTART14:
  473.     dc.b $40+20+6*12
  474. VSTOP14:
  475.     dc.b $0
  476.     dc.b $00
  477.  dc.w    %0000001111000000,%0111110000111110
  478.  dc.w    %0000111111110000,%1111000000001111
  479.  dc.w    %0011111111111100,%1100010000100011
  480.  dc.w    %0111111111111110,%1000110010100001
  481.  dc.w    %0111111111111110,%1000010011100001
  482.  dc.w    %0011111111111100,%1100111001000011
  483.  dc.w    %0000111111110000,%1111000000001111
  484.  dc.w    %0000001111000000,%0111110000111110
  485.  dc.w    0,0    ; fine sprite
  486.  
  487. MIOSPRITE7:        ; lunghezza 13 linee
  488. VSTART7:
  489.     dc.b 0
  490. HSTART7:
  491.     dc.b $40+12+7*20
  492. VSTOP7:
  493.     dc.b $0
  494.     dc.b $0
  495.  dc.w    %0000001111000000,%0111110000111110
  496.  dc.w    %0000111111110000,%1111001111001111
  497.  dc.w    %0011111111111100,%1100000001000011
  498.  dc.w    %0111111111111110,%1000000001000001
  499.  dc.w    %0111111111111110,%1000000001000001
  500.  dc.w    %0011111111111100,%1100000001000011
  501.  dc.w    %0000111111110000,%1111000001001111
  502.  dc.w    %0000001111000000,%0111110000111110
  503. VSTART15:
  504.     dc.b $0
  505. HSTART15:
  506.     dc.b $40+20+7*12
  507. VSTOP15:
  508.     dc.b $0
  509.     dc.b $00
  510.  dc.w    %0000001111000000,%0111110000111110
  511.  dc.w    %0000111111110000,%1111000000001111
  512.  dc.w    %0011111111111100,%1100010011100011
  513.  dc.w    %0111111111111110,%1000110011000001
  514.  dc.w    %0111111111111110,%1000010000100001
  515.  dc.w    %0011111111111100,%1100111011100011
  516.  dc.w    %0000111111110000,%1111000000001111
  517.  dc.w    %0000001111000000,%0111110000111110
  518.  dc.w    0,0    ; fine sprite
  519.  
  520.     SECTION    PLANEVUOTO,BSS_C
  521. BITPLANE:
  522.     ds.b    40*256
  523.  
  524.     end
  525.  
  526. In questo listato viene mostrato come riutilizzare gli sprite piu` volte sulla
  527. stessa schermata. Nell'esempio, ogni sprite viene utilizzato due volte.
  528. Lo sprite 0 viene riutilizzato per disegnare lo sprite 8.
  529. Lo sprite 1 viene riutilizzato per disegnare lo sprite 9.
  530. Lo sprite 2 viene riutilizzato per disegnare lo sprite 10.
  531. Lo sprite 3 viene riutilizzato per disegnare lo sprite 11.
  532. Lo sprite 4 viene riutilizzato per disegnare lo sprite 12.
  533. Lo sprite 5 viene riutilizzato per disegnare lo sprite 13.
  534. Lo sprite 6 viene riutilizzato per disegnare lo sprite 14.
  535. Lo sprite 7 viene riutilizzato per disegnare lo sprite 15.
  536.  
  537. Notate che quando uno sprite viene utilizzato la seconda volta, esso viene
  538. posizionato sullo schermo PIU` IN BASSO dell'ultima riga dello sprite
  539. visualizzato durante il primo utilizzo. Questo e` dovuto ad una precisa limita-
  540. zione dell'hardware. Infatti tra un utilizzo e il successivo di uno sprite e`
  541. necessario lasciare ALMENO una riga vuota.
  542.  
  543. Il byte VSTART dello sprite 8 deve essere MAGGIORE di VSTOP dello sprite 0
  544. Il byte VSTART dello sprite 9 deve essere MAGGIORE di VSTOP dello sprite 1
  545. Il byte VSTART dello sprite 10 deve essere MAGGIORE di VSTOP dello sprite 2
  546. Il byte VSTART dello sprite 11 deve essere MAGGIORE di VSTOP dello sprite 3
  547. Il byte VSTART dello sprite 12 deve essere MAGGIORE di VSTOP dello sprite 4
  548. Il byte VSTART dello sprite 13 deve essere MAGGIORE di VSTOP dello sprite 5
  549. Il byte VSTART dello sprite 14 deve essere MAGGIORE di VSTOP dello sprite 6
  550. Il byte VSTART dello sprite 15 deve essere MAGGIORE di VSTOP dello sprite 7
  551.  
  552. Riutilizzare uno sprite non cambiano i registri colore che ad esso sono
  553. assegnati.
  554. Nell'esempio potete notare infatti che uno sprite "riusato" ha gli stessi
  555. colori di quelli "originali". Poiche` pero` gli sprite sono posizionati
  556. sullo schermo a diverse altezze, nulla ci impedisce di cambiare i valori dei
  557. registri colore tra un utilizzo e l'altro usando il copper. Potete farlo
  558. per esercizio.
  559.